{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**通用最佳实践回顾**\n",
    "\n",
    "- `std::unordered_set<Key>` 通过哈希表提供平均 `O(1)` 的插入、查找与删除，适合高频成员测试、去重过滤等场景。\n",
    "- 使用 `reserve` / `rehash` 控制装载因子 (`load_factor`) 以减少 rehash 次数、保证性能；当预估元素规模明确时应在插入前预留空间。\n",
    "- 对自定义类型需提供哈希函数和相等谓词；对字符串可采用 `std::hash<std::string_view>` 实现透明查找并降低临时对象成本。\n",
    "- 删除元素后不会使其他迭代器失效，但遍历期间删除应使用 `it = set.erase(it)`。迭代顺序不稳定，如需稳定性的顺序容器应考虑 `std::set`/`std::vector`。\n",
    "- 当哈希集合成为关键性能路径时，可配合 Bloom 过滤器等结构先做近似判断，再落回 `unordered_set` 进行精确校验。\n",
    "- 内存占用随负载和桶分配提升；在嵌入式或极端内存敏感场景可考虑 `std::flat_set`、`std::vector` + 排序/二分等替代方案。\n",
    "- 对流式数据去重可周期性清理或分段化管理集合，避免无限增长；需要持久化时可定期快照或将内容转储至磁盘结构。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| 序号 | 工程场景                                  | 文件名                             | 说明要点                                                     | 可运行示例代码               |\n",
    "| ---- | ----------------------------------------- | ---------------------------------- | ------------------------------------------------------------ | ---------------------------- |\n",
    "| 1    | 高速成员测试、去重过滤（URL/ID/特征）     | `unordered_set_fast_filter.cpp`    | 预留容量、使用 `contains`/`emplace` 快速去重；演示批量过滤输入列表 | 示例 1：高速 URL 去重过滤    |\n",
    "| 2    | 爬虫/流处理的去重集合                     | `unordered_set_crawler_dedupe.cpp` | 实现爬虫 URL 队列去重；展示边插入边处理及周期性清理          | 示例 2：爬虫去重集合         |\n",
    "| 3    | 访问/授权快速判定（Bloom 过滤器回退集合） | `unordered_set_auth_bloom.cpp`     | 先用简单 Bloom 过滤器做近似检测，再回退到精准哈希集合确认    | 示例 3：Bloom + 哈希授权判定 |\n",
    "| 4    | 枚举生成去重后的唯一集合                  | `unordered_set_unique_enum.cpp`    | 将生成器输出去重并输出唯一结果；展示 `reserve`、`insert`、遍历输出 | 示例 4：枚举去重唯一集合     |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 示例 1：高速 URL 去重过滤（unordered_set_fast_filter.cpp）\n",
    "- 示例 2：爬虫去重集合（unordered_set_crawler_dedupe.cpp）\n",
    "- 示例 3：Bloom + 哈希授权判定（unordered_set_auth_bloom.cpp）\n",
    "- 示例 4：枚举去重唯一集合（unordered_set_unique_enum.cpp）"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "C++17",
   "language": "C++17",
   "name": "xcpp17"
  },
  "language_info": {
   "name": "C++17"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
